package com.nas.crocus.dao.impl;

import java.util.Collection;

import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.nas.crocus.dao.ReservaAlojamientoDao;
import com.nas.crocus.domain.ReservaAlojamiento;

@Repository
public class ReservaAlojamientoDaoImpl implements ReservaAlojamientoDao {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void guardar(ReservaAlojamiento reservaAlojamiento) {
        sessionFactory.getCurrentSession().save(reservaAlojamiento);
    }

    @Override
    public void actualizar(ReservaAlojamiento reservaAlojamiento) {
        sessionFactory.getCurrentSession().update(reservaAlojamiento);

    }

    @Override
    public ReservaAlojamiento obtenerPorClave(Long registroAlojamientoId,
            Long pasajeroId) {
        return (ReservaAlojamiento) sessionFactory
                .getCurrentSession()
                .createCriteria(ReservaAlojamiento.class)
                .add(Restrictions.eq("registroAlojamientoId",
                        registroAlojamientoId))
                .add(Restrictions.eq("pasajeroId", pasajeroId)).uniqueResult();
    }

    @Override
    public ReservaAlojamiento obtenerPorPasajeroId(Long pasajeroId) {
        return (ReservaAlojamiento) sessionFactory.getCurrentSession()
                .createCriteria(ReservaAlojamiento.class)
                .add(Restrictions.eq("pasajeroId", pasajeroId)).uniqueResult();
    }

    @Override
    public void eliminar(ReservaAlojamiento reservaAlojamiento) {
        sessionFactory.getCurrentSession().delete(reservaAlojamiento);
    }

}
